স্প্রিং বুট জেপিএ (Spring Boot JPA) অ্যাপ্লিকেশনে ডেটাবেসে একটি Entity-র created এবং last modified তারিখ স্বয়ংক্রিয়ভাবে ট্র্যাক করা খুবই গুরুত্বপূর্ণ হতে পারে। স্প্রিং ডেটা জেপিএ (Spring Data JPA) আপনাকে @CreatedDate, @LastModifiedDate, এবং @EntityListeners অ্যানোটেশন ব্যবহার করে এই কাজটি সহজেই করতে সাহায্য করে। এই অ্যানোটেশনগুলো Entity ক্লাসের সাথে সম্পর্কিত সময় এবং তারিখ ট্র্যাক করার জন্য ব্যবহৃত হয়, যা সাধারণত লগিং, অডিটিং, এবং অন্যান্য কাজের জন্য দরকারি হতে পারে।
১. @CreatedDate অ্যানোটেশন
@CreatedDate অ্যানোটেশনটি একটি Entity এর ফিল্ডে ব্যবহার করা হয়, যা সেই Entity তৈরি হওয়ার সময় স্বয়ংক্রিয়ভাবে তৈরি তারিখ এবং সময় পূর্ণ করবে। এটি সাধারণত audit ফিল্ড হিসেবে ব্যবহৃত হয়।
উদাহরণ:
import javax.persistence.Entity;
import javax.persistence.Id;
import org.springframework.data.annotation.CreatedDate;
import java.time.LocalDateTime;
@Entity
public class Product {
@Id
private Long id;
private String name;
@CreatedDate
private LocalDateTime createdDate;
// getters and setters
}
এখানে, createdDate ফিল্ডে @CreatedDate অ্যানোটেশন ব্যবহার করা হয়েছে, যার মাধ্যমে স্প্রিং নিজেই Entity তৈরি হওয়ার সময় বর্তমান তারিখ এবং সময় ইনজেক্ট করবে।
কনফিগারেশন:
@CreatedDate কাজ করার জন্য, আপনার স্প্রিং কনফিগারেশনটিতে @EnableJpaAuditing অ্যানোটেশন যুক্ত করতে হবে।
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
@Configuration
@EnableJpaAuditing
public class JpaConfig {
}
এটি স্প্রিং কনটেক্সটে অডিটিং সক্ষম করে এবং আপনার Entity-তে @CreatedDate এবং @LastModifiedDate ফিল্ডগুলির আপডেট পরিচালনা করবে।
২. @LastModifiedDate অ্যানোটেশন
@LastModifiedDate অ্যানোটেশনটি একটি Entity-র last modified তারিখ বা সময় ট্র্যাক করতে ব্যবহৃত হয়। যখন Entity এর কোনো পরিবর্তন হয়, তখন স্প্রিং এটিকে স্বয়ংক্রিয়ভাবে আপডেট করে। এটি সাধারণত updatedDate ফিল্ডে ব্যবহার করা হয়।
উদাহরণ:
import javax.persistence.Entity;
import javax.persistence.Id;
import org.springframework.data.annotation.LastModifiedDate;
import java.time.LocalDateTime;
@Entity
public class Product {
@Id
private Long id;
private String name;
@LastModifiedDate
private LocalDateTime lastModifiedDate;
// getters and setters
}
এখানে, lastModifiedDate ফিল্ডে @LastModifiedDate অ্যানোটেশন ব্যবহার করা হয়েছে, যার মাধ্যমে স্প্রিং Entity আপডেট করার সময় এই ফিল্ডটি স্বয়ংক্রিয়ভাবে পরিবর্তন করবে।
৩. @EntityListeners অ্যানোটেশন
@EntityListeners অ্যানোটেশনটি Entity ক্লাসে একটি listener নির্ধারণ করতে ব্যবহৃত হয়, যা Entity এর lifecycle ইভেন্ট (যেমন @PrePersist, @PostPersist, @PreUpdate, @PostUpdate, ইত্যাদি) ট্র্যাক করতে সাহায্য করে। এই অ্যানোটেশনটি সাধারণত audit এবং entity lifecycle ইভেন্টগুলি ট্র্যাক করার জন্য ব্যবহৃত হয়।
উদাহরণ:
আপনি একটি Entity Listener তৈরি করতে পারেন, যা Entity এর তৈরি বা পরিবর্তনের সময় কিছু অডিট তথ্য সেট করবে।
Entity Listener ক্লাস:
import org.springframework.data.domain.Auditable;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.EntityListeners;
import javax.persistence.MappedSuperclass;
import java.time.LocalDateTime;
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class Auditable {
private LocalDateTime createdDate;
private LocalDateTime lastModifiedDate;
// getters and setters
}
Entity ক্লাস:
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Product extends Auditable {
@Id
private Long id;
private String name;
// getters and setters
}
এখানে, Auditable ক্লাসটি @EntityListeners অ্যানোটেশন ব্যবহার করে স্প্রিং AuditingEntityListener শ্রেণীটি ব্যবহার করছে, যা createdDate এবং lastModifiedDate স্বয়ংক্রিয়ভাবে আপডেট করতে সাহায্য করে।
সারাংশ
স্প্রিং বুট জেপিএ (Spring Boot JPA)-তে @CreatedDate, @LastModifiedDate, এবং @EntityListeners অ্যানোটেশনগুলি Entity ক্লাসের জন্য audit তথ্য স্বয়ংক্রিয়ভাবে পূর্ণ করতে ব্যবহৃত হয়।
- @CreatedDate: Entity তৈরি হওয়ার সময় createdDate ফিল্ড পূর্ণ করে।
- @LastModifiedDate: Entity আপডেট হলে lastModifiedDate ফিল্ডটি আপডেট করে।
- @EntityListeners: Entity এর lifecycle ইভেন্টগুলির ওপর শ্রবণ করে, যেমন তৈরি বা পরিবর্তনের সময় অডিট তথ্য পূর্ণ করা।
এগুলি ব্যবহার করে, আপনি Entity এর ট্র্যাকিং এবং অডিটিং তথ্য সহজে পরিচালনা করতে পারেন, যা অ্যাপ্লিকেশনটির নির্ভরযোগ্যতা এবং ডেটা ম্যানেজমেন্টের জন্য গুরুত্বপূর্ণ।